OpenJ9 Shared Class Cache read feature #1501
Open
+1,466
−13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello! I am opening this PR to generate a discussion of whether there would be any interest to adopt this feature into the main Soot project, or get any advice possible on if there is a more appropriate place to make this feature available...
This feature is a backend source reading support for a very specific type of source: ROMClasses from a Shared Class Cache (SCC) from a JVM that is built with (a modified custom version of) OpenJ9 in it.
ROMClasses have a similar format to classfile format, except with a few caveats, which means that the pre-existing implementations for reading classfile format will not work on the SCC. It may be advantageous for some projects to consume ROMClass format, in a manner preferred to regular classfile format, as the classes in the SCC are guaranteed to be those in an executing application, compared to the assumption that those read in a classfile format are the same variants, in a distributed static analysis scenario. I understand that this is a very specific use case, however there may be others, which is another reason that I would like to present the feature, to see if its something that someone could use in another way.
Right now I know the build appears to fail, as I mention, the OpenJ9 version required for this feature to work is custom, and not an official release from the Eclipse OpenJ9 development cycle, but, I am working on PR'ing into OpenJ9 the necessary components to officially support this feature. Depending on whether/when that can be adopted officially, I can alternatively provide a succinct (automated way) to obtain the JVM build to use this feature.
Additionally if there is interest, I would be able to take a look into writing a custom Github workflow to include testing of this feature in the CI, if that is necessary,
And lastly , I am aware that the current contribution is lacking in test support, but that is something that I could spend time on, depending on what the thoughts here are,
Again, I'd like to simply start a discussion about whether this feature is interesting from a main Soot project perspective,
Thank you for your time